This disclosure relates in general to coordinating performance of tasks pertaining to electronic content files across a set of independent resources. Specifically, tasks related to multiple transcoding efforts can be prioritized and assigned to different resources based on the priorities.
Frequently, digital files are transcoded to, e.g., conform the file's format to one supported by a device requesting the file or to improve compression performance. Some systems repeatedly transcode files. For example, a system could support a large client base that wishes to transcode files such that the transcoded files can be supplied to webpage viewers. Another system could respond to download file requests from users using different types of user devices (and thus supporting different types of files).
In these instances, limited system resources can result in a transcoding backlog. This backlog is often compounded when the system resources are also relied on from non-transcoding tasks. To deal with the backlog, a queue may be formed, such that tasks (e.g., transcoding tasks) high in the queue are handled before tasks low in the queue. Queues are often managed in a linear and single-chain manner: new tasks are added to a bottom of a queue, a processor handles a task at a top of the queue, the handled task is removed from the queue, and the processor then handles a new task at the top of the queue. This protocol allows for straight-forward management of the queue, but it is not the most efficient technique for handling the tasks.